// LSL script generated: Greeter v1.2.lslp Thu Mar 15 11:24:09 Hora oficial do Brasil 2012
// Sistema de BoasVindas

string wikia = "http://pt-br.atsproducts.wikia.com/wiki/";
string product = "Greeter_Help";
string support = "http://atsproducts.sysaidcss.com/EndUserPortal.jsp";

list Managers;
list ManagerMenuOpt;
list HelpMenuOpt;
list TestUserOpt;
list Visitors;
list VisitorMenuOpt;
list PromoMessages;
list ToEmail;


integer MenuChan;
integer MenuListen;

float Time;
float SendMailTime;
float Range;
float Rate;
string BoasVindas;
string VisitorName;

key TextUIID;
string GiftName;
string InfoNoteName;
string ObjectName;
string LandmarkName;
integer GiftType;
string MyGroup;

integer ConfigRequired = TRUE;
string ConfigNotecardSuffix = ".cfg";
float ConfigTimeout = 60.0;
integer ConfigLineIndex;
key ConfigRequestID;
list ConfigCards;
string ConfigCardName;
integer ConfigCardIndex;
integer Debug;


cfgInit(){
    (Managers = ["Akasha Menna"]);
    (ManagerMenuOpt = ["ReadCfgCard","ShowConfig","Help","ClearList","ListVisitor","SendEmail","TurnOff","TurnOn","TestUserMenu"]);
    (HelpMenuOpt = ["<<Back","OnLineHelp","Support"]);
    (VisitorMenuOpt = [" ","JoinGroup"," ","GetInfo","GetLand","GetGift"]);
    (TestUserOpt = ["<<Back","JoinGroup"," ","GetInfo","GetLand","GetGift"]);
    (PromoMessages = []);
    (ToEmail = ["atsproducts@sysaidcss.com"]);
    (Time = 10);
    (Debug = TRUE);
    (Rate = 60);
    (Range = 200);
    (MenuChan = 500);
    (GiftType = INVENTORY_NONE);
    (GiftName = "NoItem");
    (InfoNoteName = "About Us");
    (LandmarkName = "Visit Us");
    (ObjectName = " Greeter v1.1");
    (SendMailTime = 5.0e-2);
    (TextUIID = ((key)"0bbf2b39-8ea2-c175-fc75-8e5106d25e12"));
    llSetObjectName(ObjectName);
    (Visitors = []);
}
 
string cfgDump(){
    string ToSay;
    (ToSay = "Configurações");
    (ToSay += ("\nGerentes: " + llList2CSV(Managers)));
    (ToSay += (((("\nLogs de visitas serão enviados para: " + llList2CSV(ToEmail)) + " a cada ") + ((string)((integer)SendMailTime))) + " horas"));
    (ToSay += "\nMensagens de promoção: ");
    integer i;
    for ((i = 0); (i < llGetListLength(PromoMessages)); (i++)) (ToSay += ((("\nPromoção " + ((string)(i + 1))) + ": ") + llList2String(PromoMessages,i)));
    (ToSay += (("\nTempo de anúncio: " + ((string)((integer)(Time / 60)))) + " minutos."));
    (ToSay += ("\nAlcance do sensor: " + ((string)Range)));
    (ToSay += ("\nTempo de atualização do sensor: " + ((string)Rate)));
    (ToSay += ("\nUIID da textura do objeto: " + ((string)TextUIID)));
    (ToSay += "\nConfiguração de invetário:");
    (ToSay += ("\nInfoNotecard: " + InfoNoteName));
    (ToSay += ("\nLandmark: " + LandmarkName));
    (ToSay += ("\nGropGift: " + GiftName));
    (ToSay += ("\nGreeter Name: " + ObjectName));
    if ((llDetectedKey(0) == llGetOwner())) {
        llOwnerSay(ToSay);
        return "";
    }
    else  return ToSay;
}

cfgPar(string str,string cardName,integer lineNum){
    (str = llStringTrim(str,STRING_TRIM_HEAD));
    if (((llGetSubString(str,0,0) == "/") || (llGetSubString(str,0,0) == "#"))) {
        return;
    }
    list ldata = llParseStringKeepNulls(str,["  =  ","  = "," =  "," = "," =","= ","="],[""]);
    string cmd = llList2String(ldata,0);
    string arg1 = llList2String(ldata,1);
    string arg2 = llList2String(ldata,2);
    if ((cmd == "mng")) {
        (Managers += [arg1]);
        say(("Adicionado novo gerente: " + ((string)arg1)));
    }
    else  if ((cmd == "promo")) {
        (PromoMessages += [arg1]);
        say(("Adicionado nova mensagem de promoção: " + ((string)arg1)));
    }
    else  if ((cmd == "mailtime")) {
        (SendMailTime = ((float)arg1));
        say(("Novo tempo para envio automático de email ajustado: " + ((string)arg1)));
    }
    else  if ((cmd == "email")) {
        (ToEmail += [arg1]);
        say(("Adicionado novo email de gerenta: " + ((string)arg1)));
    }
    else  if ((cmd == "time")) {
        (Time = (((float)arg1) * 60));
        say(("Novo tempo de de anúncio de promoção: " + ((string)arg1)));
    }
    else  if ((cmd == "debug")) {
        (Debug = ((integer)arg1));
        say(("Atualizadas configurações de Debug: " + ((string)arg1)));
    }
    else  if ((cmd == "gift")) {
        if ((arg1 == "notecard")) (GiftType = INVENTORY_NOTECARD);
        else  if ((arg1 == "box")) (GiftType = INVENTORY_OBJECT);
        else  if (((arg1 == "skin") || (arg1 == "shape"))) (GiftType == INVENTORY_BODYPART);
        else  if (((arg1 == "tattoo") || (arg1 == "clothes"))) (GiftType = INVENTORY_CLOTHING);
        else  if ((arg1 == "gesture")) (GiftType = INVENTORY_GESTURE);
        else  if ((arg1 == "anim")) (GiftType = INVENTORY_ANIMATION);
        else  if ((arg1 = "none")) (GiftType = INVENTORY_NONE);
        (GiftName = arg2);
        say(("Gift a entregar aos visistantes: " + ((string)arg2)));
    }
    else  if ((cmd == "dist")) {
        (Range = ((integer)arg1));
        if ((Range > 96)) {
            (Range = 96);
            say("Não posso ajustar uma distancia maior que 96m.");
            say("A distancia foi ajustada para 96m.");
        }
        say(("Nova distancia de sensor ajustada: " + ((string)arg1)));
    }
    else  if ((cmd == "freq")) {
        (Rate = ((integer)arg1));
        say(("Nova frequencia de sensor ajustada: " + ((string)arg1)));
    }
    else  if ((cmd == "text")) {
        (TextUIID = ((key)arg1));
        say(("Nova textura de objeto ajustada: " + ((string)arg1)));
    }
    else  if ((cmd == "note")) {
        (InfoNoteName = arg1);
        say(("Novo notecard de informacao ajustado: " + ((string)arg1)));
    }
    else  if ((cmd == "land")) {
        (LandmarkName = arg1);
        say(("Nova landmark ajustado: " + ((string)arg1)));
    }
    else  if ((cmd == "object")) {
        (ObjectName = arg1);
        (ObjectName += " Greeter v1.1");
        llSetObjectName(ObjectName);
        say(("Novo nome de Greeter ajustado: " + ((string)ObjectName)));
    }
}
 
integer nextCard(){
    if ((ConfigCardIndex >= llGetListLength(ConfigCards))) {
        (ConfigCards = []);
        return FALSE;
    }
    (ConfigLineIndex = 0);
    (ConfigCardName = llList2String(ConfigCards,ConfigCardIndex));
    (ConfigCardIndex++);
    (ConfigRequestID = llGetNotecardLine(ConfigCardName,ConfigLineIndex));
    say(("Lendo " + ConfigCardName));
    return TRUE;
}

cfgDone(){
    cfgDump();
    say("Configurações aceitas.");
}
 
 
say(string str){
    llOwnerSay(str);
}

integer isNameOnList(string name,list lista){
    integer len = llGetListLength(lista);
    integer i;
    for ((i = 0); (i < len); (i++)) {
        if ((llList2String(lista,i) == name)) {
            return TRUE;
        }
    }
    return FALSE;
}

promo(){
    integer i;
    integer len = llGetListLength(PromoMessages);
    integer Msg2Say = ((integer)llFrand(len));
    for ((i = 0); (i < len); (i++)) {
        if ((i == Msg2Say)) {
            llShout(0,llList2String(PromoMessages,i));
        }
    }
}

sendMail(string command){
    string message = command;
    integer i;
    integer len = llGetListLength(Visitors);
    list TimeStamp = llParseString2List(llGetTimestamp(),["-",":"],["T"]);
    string Data = ((((llList2String(TimeStamp,2) + "/") + llList2String(TimeStamp,1)) + "/") + llList2String(TimeStamp,0));
    string Hora = ((((((string)llList2Integer(TimeStamp,4)) + ":") + llList2String(TimeStamp,5)) + ":") + llList2String(TimeStamp,6));
    string EmailMessage = (("Lista de Visitantes para o dia " + Data) + "\n");
    (EmailMessage += ("\nTotal de visitantes: " + ((string)len)));
    (EmailMessage += "\nLista de visitantes:");
    float SecsPerDay = (SendMailTime * 3600);
    for ((i = 0); (i < len); (i++)) (EmailMessage += ((("\n" + ((string)(i + 1))) + ". ") + llList2String(Visitors,i)));
    if ((((llGetTime() >= SecsPerDay) || (llGetTimeOfDay() == 0)) || (message == llList2String(ManagerMenuOpt,5)))) {
        for ((i = 0); (i < llGetListLength(ToEmail)); (i++)) {
            say(("Enviando email para: " + llList2String(ToEmail,i)));
            llEmail(llList2String(ToEmail,i),"Lista de visitantes",EmailMessage);
        }
        (Visitors = []);
        llResetTime();
        say("Emails enviados com sucesso.");
    }
}

menu(string name,integer chan,key id){
    string nome = llKey2Name(id);
    string MsgDialog = (("Olá " + nome) + " Escolha uma das opções abaixo.\n");
    if ((name == "manager")) {
        llDialog(id,MsgDialog,ManagerMenuOpt,MenuChan);
    }
    else  if ((name == "visitor")) {
        llDialog(id,MsgDialog,VisitorMenuOpt,MenuChan);
    }
    else  if ((name == "test")) {
        llDialog(id,MsgDialog,TestUserOpt,MenuChan);
    }
    else  if ((name == "help")) {
        llDialog(id,MsgDialog,HelpMenuOpt,MenuChan);
    }
    else  {
        say("Escolha inválida de menu...");
    }
}

default {


    state_entry() {
        llSetText("",<1.1,1.1,1.1>,1.1);
        state s_config;
    }

    
    on_rez(integer start_param) {
        llResetScript();
    }
}
 
state s_reconfig {

    state_entry() {
        state s_config;
    }
}
 
state s_config {

    state_entry() {
        cfgInit();
        llSetText("Lendo notecard(s) de configuração",<1.1,1.1,0.0>,1);
        llSetColor(<1.1,1.1,0.0>,ALL_SIDES);
        string item;
        (ConfigCards = []);
        integer n = llGetInventoryNumber(INVENTORY_NOTECARD);
        while (((n--) > 0)) {
            (item = llGetInventoryName(INVENTORY_NOTECARD,n));
            if ((llSubStringIndex(item,ConfigNotecardSuffix) != (-1))) {
                (ConfigCards += [item]);
            }
        }
        (ConfigCardIndex = 0);
        if (nextCard()) {
            llSetTimerEvent(ConfigTimeout);
        }
        else  if (ConfigRequired) {
            say("Faltam notecards de configuração");
            state s_configRetry;
        }
        else  {
            state s_on;
        }
    }

 
    dataserver(key query_id,string data) {
        if ((query_id == ConfigRequestID)) {
            if ((data == EOF)) {
                if ((!nextCard())) {
                    cfgDone();
                    state s_on;
                }
            }
            else  {
                cfgPar(data,ConfigCardName,ConfigLineIndex);
                (ConfigRequestID = llGetNotecardLine(ConfigCardName,(++ConfigLineIndex)));
                llSetTimerEvent(ConfigTimeout);
            }
        }
    }

 
    timer() {
        say("Tempo de configuração esgotado: tente novamente.");
        state s_configRetry;
    }

 
    on_rez(integer num) {
        state s_reconfig;
    }

 
    changed(integer change) {
        if ((change & CHANGED_OWNER)) {
            llResetScript();
        }
    }

 
    state_exit() {
        llSetTimerEvent(0);
        llSetText("Configuração Aceita.",<1.1,1.1,1.1>,1.1);
        llSetColor(<1.1,1.1,1.1>,ALL_SIDES);
    }
}
 
state s_configRetry {

    touch_start(integer tot) {
        if (((llDetectedKey(0) == llGetOwner()) || isNameOnList(llKey2Name(llDetectedKey(0)),Managers))) {
            state s_config;
        }
    }

 
    changed(integer change) {
        if ((change & CHANGED_OWNER)) {
            llResetScript();
        }
    }
}
 
state s_unconfigured {

    state_entry() {
        llSetText("Sem configuração",<1.1,1.1,1.1>,1.1);
    }

 
    changed(integer change) {
        if ((change & CHANGED_OWNER)) {
            llResetScript();
        }
    }

 
    state_exit() {
        llSetText("Sem configuração",<1.1,0.0,0.0>,1.1);
        llSetColor(<1.1,0.0,0.0>,ALL_SIDES);
    }
}
 
state s_on {

 
    state_entry() {
        llSetTimerEvent(Time);
        llSensorRepeat("","",AGENT,Range,TWO_PI,Rate);
        llSetColor(<1,1,1>,ALL_SIDES);
        llSetTexture(TextUIID,ALL_SIDES);
        llSetText("Sistema de boas vindas Greeter v1.1 Ativo",<1,1,1>,1);
    }


    touch_start(integer total_number) {
        llSetTimerEvent(300);
        key id = llDetectedKey(0);
        (MenuListen = llListen(MenuChan,"",id,""));
        if (isNameOnList(llKey2Name(id),Managers)) menu("manager",MenuChan,id);
        else  menu("visitor",MenuChan,id);
    }


    sensor(integer total_number) {
        integer i;
        for ((i = 0); (i < total_number); (i++)) {
            key id = llDetectedKey(i);
            (MenuListen = llListen(MenuChan,"",id,""));
            if (llDetectedKey(i)) {
                (VisitorName = llDetectedName(i));
                if ((isNameOnList(llDetectedName(i),Visitors) == FALSE)) {
                    (BoasVindas = (("Seja bem vindo " + VisitorName) + ".\n"));
                    (BoasVindas = (("Hoje você é nosso visitante número " + ((string)llGetListLength(Visitors))) + "."));
                    (BoasVindas += "Aproveite sua estadia em nosso estabelecimento e divirta-se.");
                    (BoasVindas += "\nNão deixe de aproveitar nossas promoções, feitas especialmente para você!");
                    llInstantMessage(id,BoasVindas);
                    (Visitors += VisitorName);
                    menu("visitor",MenuChan,id);
                }
            }
        }
    }

    
    timer() {
        promo();
        sendMail("Timer");
    }


    listen(integer channel,string name,key id,string message) {
        if ((message == llList2String(ManagerMenuOpt,1))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            string ToSay = cfgDump();
            llInstantMessage(id,ToSay);
        }
        else  if ((message == llList2String(ManagerMenuOpt,0))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            state s_reconfig;
        }
        else  if ((message == llList2String(ManagerMenuOpt,2))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("help",MenuChan,id);
        }
        else  if ((message == llList2String(HelpMenuOpt,0))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
        }
        else  if ((message == llList2String(HelpMenuOpt,1))) {
            menu("help",MenuChan,id);
            llLoadURL(id,"Deseja abrir a página de Ajuda do sistema Greeter v1.1?",(wikia + product));
        }
        else  if ((message == llList2String(HelpMenuOpt,2))) {
            menu("help",MenuChan,id);
            llLoadURL(id,"Deseja abrir a página de Suporte do sistema Greeter v1.1?",support);
        }
        else  if ((message == llList2String(ManagerMenuOpt,3))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            (Visitors = []);
        }
        else  if ((message == llList2String(ManagerMenuOpt,4))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            llInstantMessage(id,"Obtendo lista de visitantes...");
            integer len = llGetListLength(Visitors);
            llInstantMessage(id,(("Listando os " + ((string)len)) + " visitantes:"));
            integer i;
            for ((i = 0); (i < len); (i++)) {
                llInstantMessage(id,llList2String(Visitors,i));
            }
        }
        else  if ((message == llList2String(ManagerMenuOpt,5))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            sendMail(llList2String(ManagerMenuOpt,5));
        }
        else  if ((message == llList2String(ManagerMenuOpt,6))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            state s_off;
        }
        else  if ((message == llList2String(ManagerMenuOpt,7))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            llInstantMessage(id,"Greeter v1.1 já esta ligado, esse comando é inválido.");
        }
        else  if ((message == llList2String(ManagerMenuOpt,8))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("test",MenuChan,id);
        }
        else  if ((message == llList2String(TestUserOpt,0))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
        }
        else  if ((message == llList2String(VisitorMenuOpt,1))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            (MyGroup = llList2String(llGetObjectDetails(llGetKey(),[OBJECT_GROUP]),0));
            llInstantMessage(id,"Para associar-se ao nosso grupo siga os passos a seguir:");
            llInstantMessage(id,(("1. Clique no link abaixo:\n secondlife:///app/group/" + MyGroup) + "/about "));
            llInstantMessage(id,"2. Clique em \"Join Now\" ");
        }
        else  if ((message == llList2String(VisitorMenuOpt,3))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            llGiveInventory(id,InfoNoteName);
        }
        else  if ((message == llList2String(VisitorMenuOpt,4))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            llGiveInventory(id,LandmarkName);
        }
        else  if ((message == llList2String(VisitorMenuOpt,5))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            if (llSameGroup(id)) llGiveInventory(id,"GiftName");
            else  {
                (MyGroup = llList2String(llGetObjectDetails(llGetKey(),[OBJECT_GROUP]),0));
                llInstantMessage(id,(("Voce precisa ser membro do grupo secondlife:///app/group/" + MyGroup) + "/about para receber o gift."));
                llInstantMessage(id,"Para associar-se ao nosso grupo siga os passos a seguir:");
                llInstantMessage(id,(("1. Clique no link abaixo:\n secondlife:///app/group/" + MyGroup) + "/about "));
                llInstantMessage(id,"2. Clique em \"Join Now\" ");
                llInstantMessage(id,"Se você já faz parte de nosso grupo, ative a tag correta.");
            }
        }
        else  llListenRemove(MenuListen);
    }

 
    changed(integer change) {
        if ((change & CHANGED_OWNER)) {
            llResetScript();
        }
    }
}

state s_off {

 
    state_entry() {
        llSetTimerEvent(Time);
        llSensorRepeat("","",AGENT,Range,TWO_PI,Rate);
        llListen(MenuChan,"","","");
        llSetColor(<0.1,0.1,0.1>,ALL_SIDES);
        llSetTexture(TextUIID,ALL_SIDES);
        llSetText("Sistema de boas vindas Greeter v1.1 Inativo",<0.1,0.1,0.1>,1);
    }


    touch_start(integer total_number) {
        llSetTimerEvent(300);
        key id = llDetectedKey(0);
        (MenuListen = llListen(MenuChan,"",id,""));
        if (isNameOnList(llKey2Name(id),Managers)) menu("manager",MenuChan,id);
        llInstantMessage(llDetectedKey(0),"Opção inválida com o sistema desligado.");
    }


    sensor(integer total_number) {
        integer i;
        for ((i = 0); (i < total_number); (i++)) {
            key id = llDetectedKey(i);
            (MenuListen = llListen(MenuChan,"",id,""));
            if (llDetectedKey(i)) {
                (VisitorName = llDetectedName(i));
                if ((isNameOnList(llDetectedName(i),Visitors) == FALSE)) {
                    (BoasVindas = (("Seja bem vindo " + VisitorName) + ".\n"));
                    (BoasVindas = (("Hoje você é nosso visitante número " + ((string)llGetListLength(Visitors))) + "."));
                    (BoasVindas += "Aproveite sua estadia em nosso estabelecimento e divirta-se.");
                    (BoasVindas += "\nNão deixe de aproveitar nossas promoções, feitas especialmente para você!");
                    llInstantMessage(id,BoasVindas);
                    (Visitors += VisitorName);
                    menu("visitor",MenuChan,id);
                }
            }
        }
    }

    
    timer() {
        promo();
        sendMail("Timer");
    }


    listen(integer channel,string name,key id,string message) {
        if ((message == llList2String(ManagerMenuOpt,1))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            string ToSay = cfgDump();
            llInstantMessage(id,ToSay);
        }
        else  if ((message == llList2String(ManagerMenuOpt,0))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            state s_reconfig;
        }
        else  if ((message == llList2String(ManagerMenuOpt,2))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("help",MenuChan,id);
        }
        else  if ((message == llList2String(HelpMenuOpt,0))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
        }
        else  if ((message == llList2String(HelpMenuOpt,1))) {
            menu("help",MenuChan,id);
            llLoadURL(id,"Deseja abrir a página de Ajuda do sistema Greeter v1.1?",(wikia + product));
        }
        else  if ((message == llList2String(HelpMenuOpt,2))) {
            menu("help",MenuChan,id);
            llLoadURL(id,"Deseja abrir a página de Suporte do sistema Greeter v1.1?",support);
        }
        else  if ((message == llList2String(ManagerMenuOpt,3))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            (Visitors = []);
        }
        else  if ((message == llList2String(ManagerMenuOpt,4))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            llInstantMessage(id,"Obtendo lista de visitantes...");
            integer len = llGetListLength(Visitors);
            llInstantMessage(id,(("Listando os " + ((string)len)) + " visitantes:"));
            integer i;
            for ((i = 0); (i < len); (i++)) {
                llInstantMessage(id,llList2String(Visitors,i));
            }
        }
        else  if ((message == llList2String(ManagerMenuOpt,5))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            sendMail(llList2String(ManagerMenuOpt,5));
        }
        else  if ((message == llList2String(ManagerMenuOpt,6))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            state s_off;
        }
        else  if ((message == llList2String(ManagerMenuOpt,7))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
            llInstantMessage(id,"Greeter v1.1 já esta ligado, esse comando é inválido.");
        }
        else  if ((message == llList2String(ManagerMenuOpt,8))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("test",MenuChan,id);
        }
        else  if ((message == llList2String(TestUserOpt,0))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            menu("manager",MenuChan,id);
        }
        else  if ((message == llList2String(VisitorMenuOpt,1))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            (MyGroup = llList2String(llGetObjectDetails(llGetKey(),[OBJECT_GROUP]),0));
            llInstantMessage(id,"Para associar-se ao nosso grupo siga os passos a seguir:");
            llInstantMessage(id,(("1. Clique no link abaixo:\n secondlife:///app/group/" + MyGroup) + "/about "));
            llInstantMessage(id,"2. Clique em \"Join Now\" ");
        }
        else  if ((message == llList2String(VisitorMenuOpt,3))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            llGiveInventory(id,InfoNoteName);
        }
        else  if ((message == llList2String(VisitorMenuOpt,4))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            llGiveInventory(id,LandmarkName);
        }
        else  if ((message == llList2String(VisitorMenuOpt,5))) {
            llInstantMessage(id,(("Enviando comando " + message) + " para o Greeter v1.1"));
            if (isNameOnList(id,Managers)) menu("test",MenuChan,id);
            else  menu("visitor",MenuChan,id);
            if (llSameGroup(id)) llGiveInventory(id,"GiftName");
            else  {
                (MyGroup = llList2String(llGetObjectDetails(llGetKey(),[OBJECT_GROUP]),0));
                llInstantMessage(id,(("Voce precisa ser membro do grupo secondlife:///app/group/" + MyGroup) + "/about para receber o gift."));
                llInstantMessage(id,"Para associar-se ao nosso grupo siga os passos a seguir:");
                llInstantMessage(id,(("1. Clique no link abaixo:\n secondlife:///app/group/" + MyGroup) + "/about "));
                llInstantMessage(id,"2. Clique em \"Join Now\" ");
                llInstantMessage(id,"Se você já faz parte de nosso grupo, ative a tag correta.");
            }
        }
        else  llListenRemove(MenuListen);
    }

 
    changed(integer change) {
        if ((change & CHANGED_OWNER)) {
            llResetScript();
        }
    }
}
